/*
* Copyright (C) 2012-2013, <Aeihu.z, aeihu.z@gmail.com>.
*
* Game Scenario Maker is a free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* Version 2(GPLv2) as published by the Free Software Foundation.
*/

//#include "CObjectListBox.h"
//
//CObjectListBox::CObjectListBox()
//{
//    Surf_SelectedItem = NULL;
//    IsMouseOver = false;
//    //OldTime =
//    Offset = 0;
//    Index = -1;
//
//    SEName_MouseOver =
//    SEName_MouseDown =
//    SEName_BoxClosed = "";
//}
//
//bool CObjectListBox::Subclass_Init()
//{
//    SEName_MouseOver = CCommon::common.MOUSEOVER_SE;
//    SEName_MouseDown = CCommon::common.MOUSEDOWN_SE;
//    SEName_BoxClosed = CCommon::common.BOXCLOSED_SE;
//
//    OffsetOfInfo.x = CCommon::common.LISTBOX_INFO_OFFSET_X;
//    OffsetOfInfo.y = CCommon::common.LISTBOX_INFO_OFFSET_Y;
//    OffsetOfBox.x = CCommon::common.LISTBOX_LOCATION_X;
//    OffsetOfBox.y = CCommon::common.LISTBOX_LOCATION_Y;
//
//    return true;
//}
//
//void CObjectListBox::Subclass_Cleanup()
//{
//    if(Surf_Info)
//    {
//        SDL_FreeSurface(Surf_Info);
//        Surf_Info = NULL;
//    }
//    CFont::OnCleanup();
//
//    if (Surf_SelectedItem != NULL)
//        SDL_FreeSurface(Surf_SelectedItem);
//
//    Surf_SelectedItem = NULL;
//}
//
//void CObjectListBox::Refresh()
//{
//    SDL_FillRect(Surf_Info, NULL, 0);
//    
//    int size = GetListSize();//ItemList.size();
//    int rows = Surf_Info->h / CFont::GetSize();
//    int cols = Surf_Info->w / CFont::GetSize();
//
//    for (int i = 0; i < (size < rows ? size : rows); i = i)
//    {
//        int str_size = 0;
//        int icon = 0;
//        string name = "";
//        int num = 0;
//        
//        GetListData(i + Offset, icon, name, num);
//
//        for (int j = 0; j < name.length();)
//        {
//            j += CCommon::common.SizeOfCharWithUTF8(name[j]);
//            str_size++;
//        }
//
//        string fmt = "%s";
//        for (int j = cols - str_size - (num / 10); j > 1; j--)
//        {
//            fmt += " ";
//        }
//        fmt += "%d";
//
//        char* msg = "";
//        sprintf(msg, fmt.c_str(), name.c_str(), num) ;
//        PrintInfo(icon, msg, i);
//    }
//}
//
//void CObjectListBox::OnMouseMove(int x, int y)
//{
//    if (!Visible)
//        return;
//
//    if( ( x > OffsetOfInfo.x ) && 
//        ( x < OffsetOfInfo.x + Surf_Info->w ) && 
//        ( y > OffsetOfInfo.y ) && 
//        ( y < OffsetOfBox.y + Surf_Info->h ) )
//    {
//        int height = CFont::GetSize();
//        int rows = Surf_Info->h / CFont::GetSize();
//        int size = GetListSize();//ItemList.size();
//
//        IsMouseOver = true;
//        
//        for (int i = 0; i < (size < rows ? size : rows); i++)
//        {
//            if (y > OffsetOfInfo.y + height * i && y < OffsetOfInfo.y + height * (i + 1))
//            {
//                if (Index != i)
//                {
//                    OnSelectedChange();
//                    //CSoundBank::SoundControl.PlaySE(SEName_MouseOver);
//                    Index = i + Offset;
//                }
//                return;
//            }
//        }
//    }
//    else
//        IsMouseOver = false;
//}
//
//void CObjectListBox::OnLButtonDown(int x, int y)
//{
//    if (Index == -1 || !IsMouseOver || !Visible)
//        return;
//}
//
//void CObjectListBox::OnLButtonUp(int x, int y)
//{}
//
//void CObjectListBox::OnSelectedChange()
//{
//    CSoundBank::SoundControl.PlaySE(SEName_MouseOver);
//
//    //if (CObjectInfoBox::objectinfobox.Visible)
//    //{
//    //    switch (ListType)
//    //    {
//    //        case TYPE_EQUIP:
//    //            CObjectInfoBox::objectinfobox.LoadObject((Equip *)GetListData(Index));
//    //        break;
//    //        case TYPE_ITEM:
//    //            CObjectInfoBox::objectinfobox.LoadObject((Item *)GetListData(Index));
//    //        break;
//    //        case TYPE_MAGIC:
//    //            CObjectInfoBox::objectinfobox.LoadObject((Magic *)GetListData(Index));
//    //        break;
//    //        case TYPE_SKILL:
//    //            CObjectInfoBox::objectinfobox.LoadObject((Skill *)GetListData(Index));
//    //        break;
//    //    }
//    //}
//}
//
//void CObjectListBox::IndexIncr()
//{
//    if (OldTime < SDL_GetTicks())
//        OldTime = SDL_GetTicks() + 100;
//    else
//        return;
//
//    int size = GetListSize();//ItemList.size();
//
//    if (Index < size - 1)
//    {
//        Index++;
//        OnSelectedChange();
//
//        if (Index >= Offset + Surf_Info->h / CFont::GetSize())
//        {
//            Offset++;
//            Refresh();
//        }
//    }
//}
//
//void CObjectListBox::IndexSubt()
//{
//    if (Index > 0)
//    {
//        if (OldTime < SDL_GetTicks())
//            OldTime = SDL_GetTicks() + 100;
//        else
//            return;
//
//        Index--;
//        OnSelectedChange();
//    
//        if (Index < Offset)
//        {
//            Offset--;
//            Refresh();
//        }
//    }
//}
//
